package com.cn.zpark.dao.impl;

import com.cn.zpark.beans.User;
import com.cn.zpark.dao.IFindUserDao;
import com.cn.zpark.utils.DruidUtils;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * @PackageName: com.cn.zpark.dao.impl
 * @ClassName: FindUserDaoImpl
 * @Description: 数据持久层
 * @author: RZS
 * @date: 2022/4/27  11:26
 */
public class FindUserDaoImpl implements IFindUserDao {

    // 准备数据库链接信息
    private Connection conn = null;
    private PreparedStatement stat = null;
    private ResultSet res = null;


    // 查询前10条数据
    @Override
    public List<User> findUser() {
        // 定义集合，用于存放查询结果数据
        List<User> lists = new ArrayList<>();
        try {
            // 获取链接对象
            conn = DruidUtils.getConn();
            // 创建sql
            String sql = "select id, username, password, phone, email, salary from user limit ?, ?";
            // 创建sql预编译对象
            stat = conn.prepareStatement(sql);
            // 替换占位符
            stat.setInt(1, 0);
            stat.setInt(2, 10);
            // 执行sql
            res = stat.executeQuery();

            // 将数据添加到list集合中
            while (res.next()) {
                // 创建user对象
                User user = new User();
                user.setId(res.getInt("id"));
                user.setUsername(res.getString("username"));
                user.setPassword(res.getString("password"));
                user.setPhone(res.getString("phone"));
                user.setEmail(res.getString("email"));
                user.setSalary(res.getDouble("salary"));

                // 添加到集合
                lists.add(user);
            }

            // 返回结果
        } catch(Exception e) {
            // 打印异常信息
            System.out.println("执行查询操作出现未知异常");
            e.printStackTrace();
        } finally {
            // 关闭资源
            DruidUtils.close(conn, res, stat);
        }


        return lists;
    }

    // 查询所有用户数据
    @Override
    public List<User> findAllUser() {
        return null;
    }

    /**
     * 分页查询
     * @param startPage 分页起始页码
     * @param number 每页显示条数
     * @return 分页查询结果
     */
    @Override
    public List<User> findUserLimit(Integer startPage, Integer number) {
        return null;
    }
}
